package com.ruoyi.service.jpjs.dan;

import com.ruoyi.common.core.domain.Ztree;
import com.ruoyi.domain.jpjs.common.dan.Dan;
import com.ruoyi.domain.jpjs.common.dan.Inventory;
import com.ruoyi.domain.jpjs.common.dandetail.DanDetail;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @author C.fw
 * @explain 危大工程报表业务层
 * @since 2020/8/15 15:43
 */
public interface DanService {

    /**
     * 根据条件分页查询危大工程列表
     *
     * @param map 封装参数
     * @return 危大工程信息集合
     */
    List<Dan> getDanList(Map<String, Object> map);

    /**
     * 保存危大工程信息
     *
     * @param dan 危大工程信息
     * @return 结果
     */
//    int insertDanBatches(List<Dan> dan);

    /**
     * 保存危大工程动态信息
     *
     * @param danDetail 危大工程动态信息
     * @return 结果
     */
    int insertDanDetail(DanDetail danDetail);

    /**
     * 根据条件分页查询危大工程列表
     *
     * @param map 封装参数
     * @return 危大工程动态信息集合
     */
    List<DanDetail> selectDanDetailInfo(Map<String, Object> map);

    /**
     * 根据ID删除危大工程动态信息
     *
     * @param danDetailId 危大工程动态信息ID
     * @return 结果
     */
    int deleteDanDetailById(String danDetailId);

    /**
     * 更新危大工程信息
     *
     * @param dan 危大工程信息
     * @return 结果
     */
    int updateDanInfo(Dan dan, MultipartFile[] companyFile, MultipartFile[] expertFile);

    /**
     * 根据ID删除危大工程信息
     *
     * @param danId 危大工程信息ID
     * @return 结果
     */
    int deleteDanById(String danId);

    List<Ztree> getProgramTree(String menu);

    /**
     * 根据ID删除动态信息附件
     *
     * @param detailId 危大工程动态信息ID
     * @return 结果
     */
    Boolean deleteFilePathById(Long detailId);

    /**
     * 更新危大工程动态信息附件
     *
     * @param detailId 危大工程动态信息ID
     * @return
     */
    int updatePathById(Long detailId);

    /**
     * 更新危大工程动态信息
     * @param danDetail 危大工程动态信息
     * @return 结果
     */
    int updateDanDetailById(DanDetail danDetail);

    /**
     * 新增危大工程清单信息
     *
     * @param inventory 危大工程清单信息
     * @return 新增条数
     */
    public int insertInventory(Inventory inventory);

    /**
     * 危大工程清单信息列表查询
     *
     * @param map
     * @return 结果
     */
    List<Inventory> getInventoryList(Map<String, Object> map);

    /**
     * 报表标识删除报表
     *
     * @param inventoryId 报表标识
     * @return 结果
     */
    public int deleteInventoryById(String inventoryId);

    /**
     * 新增危大工程清单信息
     *
     * @param dan 危大工程
     * @return 新增条数
     */
    public int insertDan(Dan dan, MultipartFile[] companyFile, MultipartFile[] expertFile);
}
